import java.util.*;

class Solution {
//    public long distinctNames(String[] ideas) {
//        // 都存入 hash 中, 然后遍历看有无
//        Set<String> hash = new HashSet<>(Arrays.asList(ideas));
//        int n = ideas.length;
//        long ret = 0;
//        for (int i = 0; i < n - 1; i++) {
//            for (int j = i + 1; j < n; j++) {
//                // 交换首字母
//                StringBuilder str1 = new StringBuilder(ideas[i]);
//                StringBuilder str2 = new StringBuilder(ideas[j]);
//                char ch1 = str1.charAt(0);
//                char ch2 = str2.charAt(0);
//                str1.setCharAt(0, ch2);
//                str2.setCharAt(0, ch1);
//                // 判断 hash 中存不存在
//                if (!hash.contains(str1.toString()) && !hash.contains(str2.toString())) {
//                    ret++;
//                }
//            }
//        }
//        return ret * 2;
//    }

    public long distinctNames(String[] ideas) {
        Set<String>[] groups = new HashSet[26];
        Arrays.setAll(groups, i -> new HashSet<>());
        for (String s : ideas) {
            // 按照首字母分组
            groups[s.charAt(0) - 'a'].add(s.substring(1));
        }
        long ret = 0;
        for (int i = 1; i < 26; i++) {
            for (int j = 0; j < i; j++) {
                int m = 0;
                for (String s : groups[i]) {
                    if (groups[j].contains(s)) m++;
                }
                ret += (long) (groups[i].size() - m) * (groups[j].size() - m);
            }
        }
        return 2 * ret;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.distinctNames(new String[]{"coffee", "donuts", "time", "toffee"}));
    }
}